/*
 * PathfinderWaypoints.java
 *
 * Created on January 2, 2008, 9:30 PM
 *
 * Copyright (C) 2007-2010  Hylke van der Schaaf
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, in version 3 of the License.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */
package hextd.wave;

import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import com.usoog.tdcore.gamegrid.GridPoint;
import com.usoog.tdcore.gamegrid.ScaledCanvas;
import com.usoog.tdcore.pathfinder.Pathfinder;

/**
 *
 * @author hylke
 */
public interface PathfinderWaypoints extends Pathfinder {

	public class Waypoint {

		public GridPoint gridPoint;
		public Point2D.Double gamePoint = new Point2D.Double();
		public Point2D.Double paintPoint = new Point2D.Double();

		/**
		 * Create a new waypoint at the specified grid location.
		 *
		 * @param col the column of the waypoint.
		 * @param row the row of the waypoint.
		 */
		public Waypoint(int col, int row) {
			gridPoint = new GridPoint(col, row);
		}
	}

	public PathLocationWaypoint getStartingPosition();

	public int length();

	public Waypoint getWaypoint(int step);

	public GridPoint getWaypointTileCoords(int step);

	public Point2D.Double getWaypointGameCoords(int step);

	public void paint(Graphics2D g2, int gameTime);

	public void resetScale(ScaledCanvas sc);

	public void finalise();

	public boolean isSelected();

	public void setSelected(boolean selected);

	public double getBaseDelay();
}
